package com.ph.shopping.facade.mapper;

import cm.ph.shopping.facade.order.entity.PhOrderUnline;
import cm.ph.shopping.facade.order.vo.PhOrderUnlineVo;
import cm.ph.shopping.facade.order.vo.QueryMerchantOrderTakeVo;
import cm.ph.shopping.facade.order.vo.QueryWebUnLineOrderVo;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ph.shopping.common.core.base.BaseMapper;
import com.ph.shopping.facade.member.entity.Member;
import com.ph.shopping.facade.merchant.entity.UserBalance;
import com.ph.shopping.facade.merchant.entity.UserBalanceRecord;
import com.ph.shopping.facade.score.entity.PhScoreTotalTrade;
import com.ph.shopping.facade.score.vo.MemberScoreVo2;

public interface IOrderUnlineMapper extends BaseMapper<PhOrderUnline> {
	/**
	 * 线下订单vo
	 * @param phOrderUnline
	 * @return
	 */
	public List<PhOrderUnlineVo>  getUnLineOrderVoList(PhOrderUnlineVo phOrderUnlineVo);
	
	/**
	 * 创建订单
	 * @param phOrderUnline
	 * @return
	 */
	public int insertOrderUnline(PhOrderUnline phOrderUnline);
	
	/**
	 *通过订单id获取订单
	 * @return
	 */
	public PhOrderUnline getPhOrderUnlineById(PhOrderUnline phOrderUnline);
	
	/**
	 * 更新订单状态
	 */
	public int updateUnlineOrderStatus(PhOrderUnline phOrderUnline);
	
	/**
	 * 修改商户 余额
	 * @param userBalance
	 * @return
	 */
	public  int  updateUserBalance(UserBalance userBalance);
	
	/**
	 * 插入余额流水记录表
	 * @param userBalanceRecord
	 * @return
	 */
	public int insertUserBalanceRecord(UserBalanceRecord userBalanceRecord);
	
	/**
	 * 
	 * @Title: updateMemberScore
	 * @Description:更新用户积分
	 * @author WQiang
	 * @date 2017年3月17日 下午5:39:13
	 * @param memberId
	 * @param standbyScore
	 * @param enableScore
	 * @param updateTime
	 * @return
	 * @throws Exception
	 */
	public int updateMemberScore(@Param("memberId") long memberId,
			@Param("standbyScore") long standbyScore, @Param("enableScore") long enableScore,
			@Param("drawcashScore") long drawcashScore) throws Exception;

	/**
	 * 
	 * @Title: insertMemberTrade
	 * @Description: 插入总流水
	 * @author WQiang
	 * @date 2017年3月17日 下午5:42:34
	 * @param memberId
	 * @param tradeCode
	 * @param score
	 * @param createTime
	 * @return
	 */
	public int insertMemberTrade(PhScoreTotalTrade totalTrade);
	
	/**
	 * 
	 * @Title: insertCostTrade
	 * @Description: 记入支出流水
	 * @author WQiang
	 * @date 2017年3月17日 下午8:02:59
	 * @param memberId
	 * @param transCode
	 * @param score
	 * @param createTime
	 * @param setId
	 * @return
	 */
	public int insertCostTrade(@Param("memberId") long memberId, @Param("transCode") int transCode,
			@Param("score") long score, @Param("setId") long setId,
			@Param("orderNo") String orderNo);
	/**
	 * 
	 * @Title: insertIncomeTrade
	 * @Description: 记入收入流水
	 * @author WQiang
	 * @date 2017年3月17日 下午8:02:37
	 * @param memberId
	 * @param transCode
	 * @param score
	 * @param createTime
	 * @param setId
	 * @return
	 */
	public int insertIncomeTrade(@Param("memberId") long memberId,
			@Param("transCode") int transCode, @Param("score") long score,
			@Param("setId") long setId, @Param("orderNo") String orderNo);
	/**
	 * 商户提货单
	 * @param queryMerchantOrderTakeVo
	 * @return
	 */
	public List<QueryMerchantOrderTakeVo> getMerchantTakeOrderVoList(QueryMerchantOrderTakeVo queryMerchantOrderTakeVo);
	
	/**
	 * 根据会员id 查询订单
	 * @param memberId
	 * @param status
	 * @return
	 */
	public List<QueryWebUnLineOrderVo>   listWebUnLineOrders(@Param("memberId")Long memberId,@Param("status")Integer status);
	
	/**
	 * 更新待用积分
	 * @param memberId
	 * @param standbyScore
	 * @return
	 */
	public int updateMemberStandbyScore(@Param("memberId") Long memberId, @Param("standbyScore") Long standbyScore);
	
	/**
	 * 
	 * @Title: getScore
	 * @Description: 查询可用积分和待用积分和已提现积分
	 * @author WQiang
	 * @date 2017年3月22日 下午5:40:13
	 * @param memberId
	 * @return
	 */
	public MemberScoreVo2 getScore(@Param("memberId") Long memberId);
	
	/**
	 * 通过会员id获取会员信息
	 * @param memberId
	 * @return
	 */
	public Member getMemberInfo(@Param("memberId") Long memberId);
}
